let timer_input = null; // 输入框丢失焦点计时器ID

$(document).ready(function() {
  initBackground();
  initInput();
  // $(".account > div").fadeIn(800);
});

function initBackground() {
  $("img.cover").on("load", function() {
    $(this).css("opacity", 1);
    // $("div.cover").css("opacity", 1);
  });
  // $("div.cover").on("transitionend", function() {
  //   $("img.cover").css("opacity", 1);
  // });
  if (URL_API_BG) { // 手动提取链接，解决 Safari 无法显示防盗链重定向图片
    fetch(URL_API_BG)
      .then(response => response.json())
      .then(data => {
        if (data && data["status"] === 1) {
          $("img.cover").attr("src", data["data"]["imgurl"]);
        }
      })
      .catch(console.error);
  }
}

function initInput() {
  let inAccount = $("#in-account");
  let inPwd = $("#in-pwd");
  let inBillNo = $("#in-bill-no");
  inAccount.on("change input", function() {
    let user = $(this).val().trim();
    $.cookie("user", user, { // 顶级域名共享
      domain: getDomain(),
      path: "/",
      expires: 365
    });
    checkAccount();
  }).on("focus", function() {
    clearTimeout(timer_input);
    inputFocus($(this));
  }).on("blur", function() {
    timer_input = setTimeout("inputBlur()", 200);
  });
  inPwd.on("change", function() {
    let user = $("#in-account").val().trim();
    let pwd = $(this).val().trim(); // 未加密
    sessionStorage.setItem(`pwd-${user}`, pwd); // 未加密版本
    $.cookie(`pwd-${user}`, md5(pwd), { // 顶级域名共享（加密版本）
      domain: getDomain(),
      path: "/",
      expires: 365
    });
  }).bind("keypress", function(e) {
    if (e.keyCode === 13 && $(this).val()) { // Enter
      let inBillNo = $("#in-bill-no");
      if (!inBillNo.is(":visible") || inBillNo.val()) {
        $("#btn-bind").trigger("click");
      }
    }
  }).on("focus", function() {
    clearTimeout(timer_input);
    inputFocus($(this));
  }).on("blur", function() {
    timer_input = setTimeout("inputBlur()", 200);
  });
  inBillNo.on("change", function() {
    let user = $("#in-account").val().trim();
    let bill_no = $(this).val().trim(); // 未加密
    sessionStorage.setItem(`billno-${user}`, bill_no); // 未加密版本
    $.cookie(`billno-${user}`, md5(bill_no), { // 顶级域名共享（加密版本）
      domain: getDomain(),
      path: "/",
      expires: 365
    });
  }).bind("keypress", function(e) {
    if (e.keyCode === 13 && $(this).val()) { // Enter
      let inPwd = $("#in-pwd");
      if (!inPwd.is(":visible") || inPwd.val()) {
        $("#btn-bind").trigger("click");
      }
    }
  }).on("focus", function() {
    clearTimeout(timer_input);
    inputFocus($(this));
    // showToastInfo("复制订单号于此，支付时已备注帐号可不填");
  }).on("blur", function() {
    timer_input = setTimeout("inputBlur()", 200);
  });
  $("#btn-bind").click(function() {
    register();
  });
  let user = $.cookie("user") ?? "";
  if (user) {
    inAccount.val(user).change();
  }
}

function inputFocus(input) {
  input.select(); // 全选
  resumeToast();
  $("div.cover").css("opacity", 1);
  // $(".account-info-desc, .account-info-desc-import, .account-info-desc-img, .account-info-home").hide(200);
  // $(".account-info-title").addClass("account-info-more");
}

function inputBlur() {
  // closeToast();
  $("div.cover").css("opacity", 0);
  // $(".account-info-desc, .account-info-desc-import, .account-info-desc-img, .account-info-home").show(200);
  // $(".account-info-title").removeClass("account-info-more");
}

function showToast(icon, msg) {
  let toast = $(".account-info-toast");
  if (!msg) {
    closeToast();
    return;
  }
  let toast_icon = $(".account-info-toast i");
  if (icon === "error") { // 错误
    toast.removeClass("account-info-toast-info").addClass("account-info-toast-error");
    toast_icon.removeClass("fa-circle-o").addClass("fa-circle-o-notch");
  } else { // 默认
    toast.removeClass("account-info-toast-error").addClass("account-info-toast-info");
    toast_icon.removeClass("fa-circle-o-notch").addClass("fa-circle-o");
  }
  $(".account-info-toast span").text(msg);
  toast.show(200);
}

function showToastInfo(msg) {
  showToast("info", msg);
}

function showToastError(msg) {
  showToast("error", msg);
}

function resumeToast() {
  $(".account-info-toast").show(200);
}

function closeToast() {
  $(".account-info-toast").hide(200);
}

function getDomain() {
  if (["localhost", "127.0.0.1"].indexOf(location.hostname) >= 0) {
    return location.hostname;
  }
  return location.hostname.split(".").slice(-2).join(".");
}

function register() {
  let user = $.cookie("user") ?? "";
  let pwd = sessionStorage.getItem(`pwd-${user}`) ?? "";
  let bill_no = sessionStorage.getItem(`billno-${user}`) ?? "";
  // let pwd_en = $.cookie(`pwd-${user}`) ?? "";
  // let bill_no_en = $.cookie(`billno-${user}`) ?? "";
  let device_id = $.cookie("fingerprint") ?? "";
  if (!user) {
    showToastError("请输入帐号");
    return;
  }
  let data_req = {
    user: user,
    pwd: pwd, // 未加密版本
    billno: bill_no, // 未加密版本
    device: device_id,
    client: CLIENT
  };
  fetch("https://api.nguaduot.cn/appstats/register", {
    method: "POST",
    body: JSON.stringify(data_req)
  }).then(response => response.json())
    .then(data => {
      if (data && data["status"] === 1) {
        if (data["data"]) {
          showToastInfo("注册成功，请等待管理员激活");
          $(".account-pwd").hide(200);
        } else {
          // showToastError("注册失败：" + data["msg"]);
          checkAccount();
        }
      } else {
        showToastError("出错：" + (data ? data["msg"] : "接口数据异常"));
      }
    })
    .catch(err => {
      showToastError("出错：" + err);
    });
}

function checkAccount() {
  let user = $.cookie("user") ?? "";
  let pwd_en = $.cookie(`pwd-${user}`) ?? "";
  let device_id = $.cookie("fingerprint") ?? "";
  if (!user) {
    showToastError("建议使用邮箱或手机号作为帐号");
    $(".account-pwd").hide(200);
    return;
  }
  let url = `https://api.nguaduot.cn/appstats/account?user=${user}&pwd=${pwd_en}&device=${device_id}`;
  fetch(url)
    .then(response => response.json())
    .then(data => {
      if (data && data["status"] === 1) {
        data = data["data"];
        if (data["reg"]) { // 已注册
          if (data["auth"]) { // 已注册已登录
            if (data["active"]) { // 已注册已登录已激活
              showToastInfo("当前帐号已绑定，返回主页刷新即可");
              $(".account-pwd").hide(200);
            } else { // 已注册已登录未激活
              showToastError("当前帐号已注册但未激活，请等待管理员激活");
              $(".account-pwd").show(200);
              $("#in-bill-no").show();
            }
          } else { // 已注册未登录
            if (data["active"]) { // 已注册未登录已激活
              showToastError("密码错误或未填写，请重新填写");
              $("#in-bill-no").hide();
              $(".account-pwd").show(200, function() {
                // $("#in-pwd").focus();
              });
            } else { // 已注册未登录未激活
              showToastError("当前帐号已注册但未激活，请等待管理员激活");
              $(".account-pwd").show(200);
              $("#in-bill-no").show();
            }
          }
        } else { // 未注册
          showToastError("该帐号尚未注册：" + data["user"]);
          $(".account-pwd").show(200);
          $("#in-bill-no").show();
        }
      } else {
        showToastError("出错：" + (data ? data["msg"] : "接口数据异常"));
        $(".account-pwd").hide(200);
      }
    })
    .catch(err => {
      showToastError("出错：" + err);
    });
}
